package com.thb.pay.core.enums;

import com.thb.pay.core.exception.IBusinessException;

/**
 * 异常枚举类，只对组件划分异常代码范围，各组件定义各组件的异常枚举 基础段位 从1开始
 */
public enum ExceptionEnum implements IBusinessException {

    /**
     * 未知异常
     **/
    UNKNOWN_ERROR(1001, "unknown.error"),

    /**
     * 入参为空
     **/
    ARGUMENT_EMPTY(1002, "argument.cannot.be.empty"),


    /**
     * 权限不足
     **/
    PERMISSION_DENIED(1003, "permission.denied"),


    /**
     * 邮件地址为空
     **/
    EMAIL_IS_EMPTY(1004, "email.is.empty"),

    /**
     * 邮件地址非法
     **/
    EMAIL_INCORRECT(1005, "email.incorrect.address"),
    /**
     * 用户或密码不正确
     */
    USERNAME_OR_PASSWORD_INCORRECT(1006, "username.or.password.not.incorrect"),

    /**
     * 用户被锁住了
     */
    LOCK_USERNAME(1007, "username.locked"),

    /**
     * 密码错误
     */
    PASSWORD_ERROR(1008, "password.error"),

    /**
     * 密码格式不正确
     */
    PASSWORD_FORMAT_ERROR(1009, "password.format.error"),


    TOKEN_EXPIRE(1010, "token.expire"),


    LOGIN_ERROR(1011, "login.error"),


    TOKEN_ILLEGAL(1012, "token.illegal"),

    USERNAME_EXIST(1013, "username.exist"),

    /**
     * 管理员授权密码不正确
     */
    AUTH_ADMIN_PASSWORD_NOT_MATCH(1014, "auth.admin.password.not.match"),
    ;

    /**
     * 异常代码
     */
    private int code;

    /**
     * 异常描述
     */
    private String messageKey;

    ExceptionEnum(String messageKey) {
        this.code = 0;
        this.messageKey = messageKey;
    }

    /**
     * 描述：构建异常
     *
     * @param code       错误代码
     * @param messageKey 错误描述
     */
    ExceptionEnum(Integer code, String messageKey) {
        this.code = code;
        this.messageKey = messageKey;
    }

    public int getCode() {
        return code;
    }

    public String getMessageKey() {
        return messageKey;
    }

}
